// ProjectName: go-learn-demo
// PackageName: _1_basic
// Description:
// Author: hy.bai
// Date: 2025-08-19 星期二 11:44

package xormybxb

import (
	"encoding/json"
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"log/slog"
)

// 更新操作
func TestGetById() {
	// 初始化Mysql数据库引擎
	InitEngine()
	val := &User{}
	has, err := MysqlEngine.Table("t_user").ID(3).Get(val)
	if err != nil {
		slog.Error("查询数据失败,原因是:", err.Error())
	}
	if has {
		data, _ := json.Marshal(val)
		fmt.Println("查询结果:", string(data))
	}
}

func TestGetById1() {
	// 初始化Mysql数据库引擎
	InitEngine()
	val := &User{
		Id: 2,
	}
	has, err := MysqlEngine.Table("t_user").Get(val)
	if err != nil {
		slog.Error("查询数据失败,原因是:", err.Error())
	}
	if has {
		data, _ := json.Marshal(val)
		fmt.Println("查询结果:", string(data))
	}
}

func TestGetByUsername() {
	// 初始化Mysql数据库引擎
	InitEngine()
	// 方式1:根据Where条件获取单条数据
	// val := &User{}
	// result, err := MysqlEngine.Table("t_user").Where("username=?", "ybxb").Get(val)

	// 方式2:根据user结构体中已有的非空数据来获得单条数据
	val := &User{
		Username: "ybxb-20250820114645", // 注意：这里也可以是主键
	}
	has, err := MysqlEngine.Table("t_user").Get(val)

	if err != nil {
		slog.Error("查询数据失败,原因是:", err.Error())
	}
	if has {
		data, _ := json.Marshal(val)
		fmt.Println("查询结果:", string(data))
	}
}
